public class Strinngtest {
    public static void main(String[] args) {
        String s1=new String("abc");
        s1.intern();
        String s2="abc";
        System.out.println(s1 == s2);//输出false
    }
    public static void main1(String[] args) {
        char[] arr={'a','b','c'};
        String s1 = new String(arr);
        s1.intern();
        String s2 = "abc";
        System.out.println(s1 == s2);//输出ture
    }
    //两个方法中s2都是引用常量池中的变量
    //上面方法在创建s1时，new String("abc")会在堆上创建一个新对象，同时字符串字面值"abc"会确保字符串常量池中存在一个"abc"对象。
    //下面方法调用s1.intern()时，由于池中还没有"abc"，方法将s1的引用添加到池中（即池中的"abc"就是s1对象）。
}
